home *** CD-ROM | disk | FTP | other *** search
GW-BASIC | 1984-04-24 | 2.9 KB | 90 lines |
- 10 REM *****************************************************
- 20 REM ********************** FIREFIRE *********************
- 30 REM *****************************************************
- 40 REM *** COPYRIGHT RICHARD K. COLLINS 1982 ***********
- 50 REM *****************************************************
- 60 REM *** PLEASE LEAVE THIS NOTICE IF YOU COPY THE PROGRAM
- 70 REM *** NOT FOR SALE OR DISTRIBUTION OTHER THAN THROUGH
- 80 REM *** CAPITAL PC USER'S GROUP.
- 90 REM *****************************************************
- 100 REM *** THE OBJECT OF THE GAME IS TO GET ALL THE ENEMY
- 110 REM *** IN THE LEAST AMOUNT OF TIME -- GOOD LUCK -- RKC
- 120 REM ****************************************************
- 130 REM *** A RIGHT ARROW STARTS YOUR MAN TO THE RIGHT
- 140 REM *** A LEFT ARROW STARTS YOUR MAN TO THE LEFT
- 150 REM *** A DOWN ARROW STOPS THE MAN
- 160 REM *** AN UP ARROW FIRES
- 170 REM ****************************************************
- 180 DEFINT A-Z
- 190 DIM ENX(20),ENY(20)
- 200 WIDTH 80 : CLS : KEY OFF
- 210 GOSUB 760
- 220 REM ---------- CHECK COMMANDS
- 230 X$ = INKEY$
- 240 XX = FRE(X$)*0 : XX = FRE(X)*0 : REM CLEAR OUT MEMORY
- 250 IF X$ = "q" THEN END
- 260 IF LEN(X$) < 2 THEN 320
- 270 C = ASC(RIGHT$(X$,1))
- 280 IF C = 77 THEN XV = XVEL
- 290 IF C = 75 THEN XV = -XVEL
- 300 IF C = 72 THEN GOSUB 470
- 310 IF C = 80 THEN XV = 0
- 320 OX = X : X = X + XV
- 330 IF X > 79 THEN X = 79
- 340 IF X < 1 THEN X = 1
- 350 IF X <> OX THEN LOCATE 24,X,0 : PRINT CHR$(127); : LOCATE 24,OX,0 : PRINT " "; : OX = X
- 360 T = T + 1 : LOCATE 1,1,0 : PRINT USING "#####";T;
- 370 FOR I = 1 TO NE
- 380 XE = ENX(I) : YE = ENY(I) : YE = YE + 1
- 390 IF YE < 1 THEN 440
- 400 IF YE = 25 THEN GOSUB 710 : GOTO 450
- 410 IF SCREEN(YE,XE) = 127 THEN GOSUB 640 : GOTO 450
- 420 IF YE > 0 THEN LOCATE YE,XE,0 : PRINT CHR$(157);
- 430 IF YE > 1 THEN LOCATE YE-1,XE,0 : PRINT " ";
- 440 ENY(I) = YE
- 450 NEXT I
- 460 GOTO 230
- 470 REM ------------ FIRE A MISSILE
- 480 FOR Y = 23 TO 1 STEP -1
- 490 C = SCREEN(Y,X)
- 500 IF C <> 157 THEN LOCATE Y,X,0 : PRINT CHR$(15);: IF Y < 23 THEN LOCATE Y+1,X,0 : PRINT " ";
- 510 IF C = 157 THEN GOSUB 550 : GOTO 540
- 520 NEXT Y
- 530 LOCATE 1,X,0 : PRINT " ";
- 540 RETURN
- 550 REM ------------ BOOM, A HIT
- 560 LOCATE Y,X,0 : PRINT CHR$(15); :LOCATE Y+1,X,0 : PRINT " ";
- 570 FOR I = 1 TO 5 : SOUND 50 + RND*50,1 : NEXT I
- 580 LOCATE Y,X,0 : PRINT " ";
- 590 FOR I = 1 TO NE
- 600 IF (ENX(I) = X) AND (ENY(I) = Y) THEN E = I : GOTO 620
- 610 NEXT I
- 620 IF NE = 1 THEN GOTO 210 ELSE ENX(E) = ENX(NE) :ENY(E) = ENY(NE) :NE = NE - 1
- 630 RETURN
- 640 REM ------------ THEY GOT YOU
- 650 LOCATE 24,X,0 : PRINT CHR$(157); : LOCATE 23,X,0 : PRINT " ";
- 660 FOR I = 1 TO 10 : SOUND 750 - RND *250,1 :NEXT I
- 670 LOCATE 1,6,0 : FOR I = 6 TO 79 : PRINT " "; : NEXT I
- 680 LOCATE 1,10,0 : PRINT " TOO BAD ! "
- 690 FOR I = 1 TO 3000 : NEXT I
- 700 GOTO 210
- 710 REM ------------ THEY MISSED YOU
- 720 SOUND 1000,1
- 730 LOCATE YE-1,XE,0 : PRINT " ";
- 740 ENY(I) = -5*RND : ENX(I) = 40 + 38*(RND - 0.5)
- 750 RETURN
- 760 REM ------------ SETUP GAME PARAMETERS ----------
- 770 XVEL = 1: LOCATE 1,10,0 :INPUT "enter number of simultaneous enemies ",NE
- 780 IF NE = 0 THEN CLS : END
- 790 CLS : T = 0
- 800 FOR I = 1 TO NE
- 810 ENY(I) = -5*RND : ENX(I) = 40 + 38*(RND - 0.5)
- 820 NEXT I
- 830 LOCATE 25,2,0 : FOR I = 2 TO 79 : PRINT CHR$(178); : NEXT I
- 840 X = 40 : LOCATE 24,X,0 : PRINT CHR$(127);
- 850 LOCATE 1,1,0 : FOR I = 1 TO 79 : PRINT " "; : NEXT I
- 860 LOCATE 1,1,0 : PRINT "press any character to begin ";
- 870 X$ = INKEY$ : IF X$ = "" THEN 870
- 880 LOCATE 1,1,0 : FOR I = 1 TO 79 : PRINT " "; : NEXT I
- 890 RETURN
-